from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) import random import csv import numpy doc = """ This is a one-shot "Prisoner's Dilemma". Two players are asked separately whether they want to cooperate or defect. Their choices directly determine the payoffs. """ class Constants(BaseConstants): name_in_url = 'strategic_draft1c' players_per_group = 2 players_per_supergroup = 4 assert players_per_supergroup % players_per_group == 0, \ SUPERGROUP_NUM_ERR num_rounds = 1 supergroup_threshold1=4 #randomly_selected_round = random.randint(1, 5) randomly_selected_round = 1 rounds_with_guess = [1,5] right_guess_payoff = "2 Euros" conversion_rate = 0.015 #randomly_selected_round = random.randint(1, 5) # payoff if 1 player defects and the other cooperates""", betray_payoff = c(100) betrayed_payoff = c(10) # payoff if both players cooperate or both defect both_cooperate_payoff = c(73) both_defect_payoff = c(43) print(randomly_selected_round) class Subsession(BaseSubsession): pass class Group(BaseGroup): pass # def random_round(self): # for p in self.get_players(): # p.random_round() class Player(BasePlayer): supergroup_task1 = models.LongStringField() id_random = models.IntegerField() decision_task1_r1 = models.IntegerField() decision_task1_r2 = models.IntegerField() decision_task1_r3 = models.IntegerField() decision_task1_r4 = models.IntegerField() decision_task1_r5 = models.IntegerField() decision_guess_task1_r1 = models.IntegerField() decision_guess_task1_r5 = models.IntegerField() decision_task1_type_r1 = models.StringField() decision_task1_type_r2 = models.StringField() decision_task1_type_r3 = models.StringField() decision_task1_type_r4 = models.StringField() decision_task1_type_r5 = models.StringField() payoff_task1_r1_int = models.IntegerField() payoff_task1_r2_int = models.IntegerField() payoff_task1_r3_int = models.IntegerField() payoff_task1_r4_int = models.IntegerField() payoff_task1_r5_int = models.IntegerField() cooprate_task1_r1 = models.IntegerField() cooprate_task1_r2 = models.IntegerField() cooprate_task1_r3 = models.IntegerField() cooprate_task1_r4 = models.IntegerField() cooprate_task1_r5 = models.IntegerField() cooprate_task1_r1_class = models.IntegerField() cooprate_task1_r5_class = models.IntegerField() decision_guess_task1_r1_premium = models.IntegerField() decision_guess_task1_r5_premium = models.IntegerField() decision_guess_premium = models.IntegerField() randomly_selected_round = models.IntegerField() round_with_guess = models.IntegerField() payoff_int = models.IntegerField() payoff_eur = models.FloatField() payoff_final = models.FloatField() payoff_eur_to_show = models.FloatField() payoff_final_to_show = models.FloatField() # def random_round(self): # self.randomly_selected_round = Constants.randomly_selected_round # if self.randomly_selected_round == 1: # self.participant.vars['payoff_int'] = int(self.participant.vars['payoff_task1_r1_int']) # elif self.randomly_selected_round == 2: # self.participant.vars['payoff_int'] = int(self.participant.vars['payoff_task1_r2_int']) # elif self.randomly_selected_round == 3: # self.participant.vars['payoff_int'] = int(self.participant.vars['payoff_task1_r3_int']) # elif self.randomly_selected_round == 4: # self.participant.vars['payoff_int'] = int(self.participant.vars['payoff_task1_r4_int']) # else: # self.participant.vars['payoff_int'] = int(self.participant.vars['payoff_task1_r5_int'])